package it.conv;

public class PolyGenerator {
	
	public static int[][] genera(int m, int out) throws Exception {
		
		int[][] g = new int[out][m];
		
		switch(out) {
		
			case 2:
				switch(m) {
				
					case 3:
						Decoder.deci2bin(7, g[0]);Decoder.deci2bin(5, g[1]);
						break;
					case 4:
						Decoder.deci2bin(15, g[0]);Decoder.deci2bin(13, g[1]);
						break;
					case 5:
						Decoder.deci2bin(29, g[0]);Decoder.deci2bin(19, g[1]);
						break;
					case 6:
						Decoder.deci2bin(61, g[0]);Decoder.deci2bin(43, g[1]);
						break;
					case 7:
						Decoder.deci2bin(121, g[0]);Decoder.deci2bin(91, g[1]);
						break;
					case 8:
						Decoder.deci2bin(249, g[0]);Decoder.deci2bin(167, g[1]);
						break;
					case 9:
						Decoder.deci2bin(491, g[0]);Decoder.deci2bin(369, g[1]);
						break;
					case 10:
						Decoder.deci2bin(869, g[0]);Decoder.deci2bin(631, g[1]);
						break;
					default:
						throw new Exception("m va scelto fra gli interi compresi tra 3 e 10!");
				
				}
				break;
			case 3:
				switch(m) {
				
					case 3:
						Decoder.deci2bin(7, g[0]);Decoder.deci2bin(7, g[1]);
						Decoder.deci2bin(5, g[2]);
						break;
					case 4:
						Decoder.deci2bin(15, g[0]);Decoder.deci2bin(13, g[1]);
						Decoder.deci2bin(11, g[2]);
						break;
					case 5:
						Decoder.deci2bin(31, g[0]);Decoder.deci2bin(27, g[1]);
						Decoder.deci2bin(21, g[2]);
						break;
					case 6:
						Decoder.deci2bin(61, g[0]);Decoder.deci2bin(43, g[1]);
						Decoder.deci2bin(39, g[2]);
						break;
					case 7:
						Decoder.deci2bin(125, g[0]);Decoder.deci2bin(101, g[1]);
						Decoder.deci2bin(91, g[2]);
						break;
					case 8:
						Decoder.deci2bin(247, g[0]);Decoder.deci2bin(217, g[1]);
						Decoder.deci2bin(149,g[2]);
						break;
					case 9:
						Decoder.deci2bin(457, g[0]);Decoder.deci2bin(435, g[1]);
						Decoder.deci2bin(367, g[2]);
						break;
					case 10:
						Decoder.deci2bin(923, g[0]);Decoder.deci2bin(757, g[1]);
						Decoder.deci2bin(591, g[2]);
						break;
					default:
						throw new Exception("m va scelto fra gli interi compresi tra 3 e 10!");
				
				}
				break;
			case 4:
				switch(m) {
				
					case 3:
						Decoder.deci2bin(7, g[0]);Decoder.deci2bin(7, g[1]);
						Decoder.deci2bin(7, g[2]);Decoder.deci2bin(5, g[3]);
						break;
					case 4:
						Decoder.deci2bin(11, g[0]);Decoder.deci2bin(13, g[1]);
						Decoder.deci2bin(13, g[2]);Decoder.deci2bin(11, g[3]);
						break;
					case 5:
						Decoder.deci2bin(21, g[0]);Decoder.deci2bin(23, g[1]);
						Decoder.deci2bin(27, g[2]);Decoder.deci2bin(31, g[3]);
						break;
					case 6:
						Decoder.deci2bin(43, g[0]);Decoder.deci2bin(55, g[1]);
						Decoder.deci2bin(57, g[2]);Decoder.deci2bin(61, g[3]);
						break;
					case 7:
						Decoder.deci2bin(93, g[0]);Decoder.deci2bin(93, g[1]);
						Decoder.deci2bin(103, g[2]);Decoder.deci2bin(115, g[3]);
						break;
					case 8:
						Decoder.deci2bin(157, g[0]);Decoder.deci2bin(189, g[1]);
						Decoder.deci2bin(203, g[2]);Decoder.deci2bin(239, g[3]);
						break;
					case 9:
						Decoder.deci2bin(307, g[0]);Decoder.deci2bin(349, g[1]);
						Decoder.deci2bin(475, g[2]);Decoder.deci2bin(485, g[3]);
						break;
					case 10:
						Decoder.deci2bin(591, g[0]);Decoder.deci2bin(757, g[1]);
						Decoder.deci2bin(923, g[2]);Decoder.deci2bin(939, g[3]);
						break;
					default:
						throw new Exception("m va scelto fra gli interi compresi tra 3 e 10!");
				
				}
				break;
			default:
				throw new Exception("I bit di output possono essere 2, 3 o 4!");
		
		}
		
		return g;
		
//		if (out == 2)
//			if (m == 3) {
//				Decoder.deci2bin(7, g[0]);Decoder.deci2bin(5, g[1]);
//			} else if (m == 4) {
//				Decoder.deci2bin(15, g[0]);Decoder.deci2bin(13, g[1]);
//			} else if (m == 5) {
//				Decoder.deci2bin(29, g[0]);Decoder.deci2bin(19, g[1]);
//			} else if (m == 6) {
//				Decoder.deci2bin(61, g[0]);Decoder.deci2bin(43, g[1]);
//			} else if(m == 7){
//				Decoder.deci2bin(121, g[0]);Decoder.deci2bin(91, g[1]);
//			} else if (m == 8) {
//				Decoder.deci2bin(249, g[0]);Decoder.deci2bin(167, g[1]);
//			} else if(m == 9){
//				Decoder.deci2bin(491, g[0]);Decoder.deci2bin(369, g[1]);
//			} else if(m == 10){
//				Decoder.deci2bin(869, g[0]);Decoder.deci2bin(631, g[1]);
//			} else {
//				throw new Exception("m va scelto fra gli interi compresi tra 3 e 10!");
//			}
//		else if (out == 3)
//			if (m == 3) {
//				Decoder.deci2bin(7, g[0]);Decoder.deci2bin(7, g[1]);
//				Decoder.deci2bin(5, g[2]);
//			} else if (m == 4) {
//				Decoder.deci2bin(15, g[0]);Decoder.deci2bin(13, g[1]);
//				Decoder.deci2bin(11, g[2]);
//			} else if (m == 5) {
//				Decoder.deci2bin(31, g[0]);Decoder.deci2bin(27, g[1]);
//				Decoder.deci2bin(21, g[2]);
//			} else if (m == 6) {
//				Decoder.deci2bin(61, g[0]);Decoder.deci2bin(43, g[1]);
//				Decoder.deci2bin(39, g[2]);
//			} else if(m == 7){
//				Decoder.deci2bin(125, g[0]);Decoder.deci2bin(101, g[1]);
//				Decoder.deci2bin(91, g[2]);
//			} else if (m == 8) {
//				Decoder.deci2bin(247, g[0]);Decoder.deci2bin(217, g[1]);
//				Decoder.deci2bin(149,g[2]);
//			} else if (m == 9) {				
//				Decoder.deci2bin(457, g[0]);Decoder.deci2bin(435, g[1]);
//				Decoder.deci2bin(367, g[2]);
//			} else if (m == 10) {				
//				Decoder.deci2bin(923, g[0]);Decoder.deci2bin(757, g[1]);
//				Decoder.deci2bin(591, g[2]);
//			} else {
//				throw new Exception("m va scelto fra gli interi compresi tra 3 e 10!"); 
//			}
//		else if (out == 4)
//			if (m == 3) {
//				Decoder.deci2bin(7, g[0]);Decoder.deci2bin(7, g[1]);
//				Decoder.deci2bin(7, g[2]);Decoder.deci2bin(5, g[3]);
//			} else if (m == 4) {
//				Decoder.deci2bin(11, g[0]);Decoder.deci2bin(13, g[1]);
//				Decoder.deci2bin(13, g[2]);Decoder.deci2bin(11, g[3]);
//			} else if (m == 5) {
//				Decoder.deci2bin(21, g[0]);Decoder.deci2bin(23, g[1]);
//				Decoder.deci2bin(27, g[2]);Decoder.deci2bin(31, g[3]);
//			} else if (m == 6) {
//				Decoder.deci2bin(43, g[0]);Decoder.deci2bin(55, g[1]);
//				Decoder.deci2bin(57, g[2]);Decoder.deci2bin(61, g[3]);
//			} else if(m == 7){
//				Decoder.deci2bin(93, g[0]);Decoder.deci2bin(93, g[1]);
//				Decoder.deci2bin(103, g[2]);Decoder.deci2bin(115, g[3]);
//			} else if (m == 8) {
//				Decoder.deci2bin(157, g[0]);Decoder.deci2bin(189, g[1]);
//				Decoder.deci2bin(203, g[2]);Decoder.deci2bin(239, g[3]);
//			} else if (m == 9) {				
//				Decoder.deci2bin(307, g[0]);Decoder.deci2bin(349, g[1]);
//				Decoder.deci2bin(475, g[2]);Decoder.deci2bin(485, g[3]);
//			} else if (m == 10) {				
//				Decoder.deci2bin(591, g[0]);Decoder.deci2bin(757, g[1]);
//				Decoder.deci2bin(923, g[2]);Decoder.deci2bin(939, g[3]);
//			} else {
//				throw new Exception("m va scelto fra gli interi compresi tra 3 e 10!");
//			}
//		else {	
//			throw new Exception("I bit di output possono essere 2, 3 o 4!");		
//		}
//		
//		return g;
		
	} 

}
